package com.dp.service.companymanage;

import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.NoResultException;
import javax.persistence.NonUniqueResultException;
import javax.persistence.Query;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.dp.pojo.JsonPage;
import com.dp.service.impl3.BaseImpl;
import com.dp.util.DataMap;
import com.dp.vo.TTelDevice;

@Service
@Transactional
public class TeldeviceServiceImpl extends BaseImpl {

	/**
	 * Find all the TTelDevice Entity
	 * @param hashMap
	 * @param firstrow
	 * @param maxrow
	 * @return List<TTelDevice>
	 */
	public List<TTelDevice> findAllTelDeviceEntity(DataMap hashMap, Integer firstrow,
			Integer maxrow){
		JsonPage jpage=(JsonPage) hashMap.get("jpage");
		TTelDevice teldevice=(TTelDevice) hashMap.get("teldevice");
		StringBuffer sqlS = new StringBuffer("SELECT t FROM TTelDevice t WHERE 1=1 ");
		if(teldevice!=null){
			if(teldevice.getKdzh()!=null&& teldevice.getKdzh().toString().trim().length() > 0){
				sqlS.append(" AND t.kdzh like '%"
						+ teldevice.getKdzh().toString().trim() + "%'");
			}
			if(teldevice.getDevicesn()!=null&& teldevice.getDevicesn().toString().trim().length() > 0){
				sqlS.append(" AND t.devicesn like '%"
						+ teldevice.getDevicesn().toString().trim() + "%'");
			}
			if(teldevice.getTelnumber()!=null&& teldevice.getTelnumber().toString().trim().length() > 0){
				sqlS.append(" AND t.telnumber like '%"
						+ teldevice.getTelnumber().toString().trim() + "%'");
			}
		}
		if(jpage!=null){
			if(jpage.getSidx()!=null&&!"".equals(jpage.getSidx())){
				sqlS.append(" order by t."+jpage.getSidx()+" "+jpage.getSord());
			}
		}
		List<TTelDevice> queryList=new ArrayList<TTelDevice>();
		try {
			Query query = em.createQuery(sqlS.toString());
			if (firstrow != null) {
				query.setFirstResult(firstrow);
			}
			if (maxrow != null) {
				query.setMaxResults(maxrow);
			}
			queryList = query.getResultList();
		} catch (Exception e) {
			logger.error(e.getMessage());
			e.printStackTrace();
		}
		return queryList;
	}
	
	/**
	 * 电话号码与SN映射信息总记录数
	 * @param hashMap
	 * @return Integer
	 */
	public Integer findAllTelDeviceEntityCount(DataMap hashMap){
		TTelDevice teldevice=(TTelDevice) hashMap.get("teldevice");
		Integer iCount = 0; 
		StringBuffer sqlS = new StringBuffer("SELECT count(t.devicesn) FROM TTelDevice t WHERE 1=1 ");
		if(teldevice!=null){
			if(teldevice.getKdzh()!=null&& teldevice.getKdzh().toString().trim().length() > 0){
				sqlS.append(" AND t.kdzh like '%"
						+ teldevice.getKdzh().toString().trim() + "%'");
			}
			if(teldevice.getDevicesn()!=null&& teldevice.getDevicesn().toString().trim().length() > 0){
				sqlS.append(" AND t.devicesn like '%"
						+ teldevice.getDevicesn().toString().trim() + "%'");
			}
			if(teldevice.getTelnumber()!=null&& teldevice.getTelnumber().toString().trim().length() > 0){
				sqlS.append(" AND t.telnumber like '%"
						+ teldevice.getTelnumber().toString().trim() + "%'");
			}
		}
		Query query=null;
		try {
			query = em.createQuery(sqlS.toString());
			iCount = Integer.valueOf(query.getSingleResult().toString());
		} catch (Exception e) {
			logger.error(e.getMessage());
			e.printStackTrace();
		}
		return iCount;
	}

	/**
	 * 换机
	 * Find all the TTelDevice Entity
	 * @param hashMap
	 * @param firstrow
	 * @param maxrow
	 * @return List<TTelDevice>
	 */
	public List<TTelDevice> findAllTelDeviceEntityhj(DataMap hashMap, Integer firstrow,
			Integer maxrow){
		JsonPage jpage=(JsonPage) hashMap.get("jpage");
		TTelDevice teldevice=(TTelDevice) hashMap.get("teldevice");
		StringBuffer sqlS = new StringBuffer("SELECT t FROM TTelDevice t WHERE 1=1 ");
		if(teldevice!=null){
			if(teldevice.getKdzh()!=null&& teldevice.getKdzh().toString().trim().length() > 0){
				sqlS.append(" AND t.kdzh='"
						+ teldevice.getKdzh().toString().trim() + "'");
			}
			if(teldevice.getDevicesn()!=null&& teldevice.getDevicesn().toString().trim().length() > 0){
				sqlS.append(" AND t.devicesn='"
						+ teldevice.getDevicesn().toString().trim() + "'");
			}
			if(teldevice.getTelnumber()!=null&& teldevice.getTelnumber().toString().trim().length() > 0){
				sqlS.append(" AND t.telnumber='"
						+ teldevice.getTelnumber().toString().trim() + "'");
			}
		}
		if(jpage!=null){
			if(jpage.getSidx()!=null&&!"".equals(jpage.getSidx())){
				sqlS.append(" order by t."+jpage.getSidx()+" "+jpage.getSord());
			}
		}
		List<TTelDevice> queryList=new ArrayList<TTelDevice>();
		try {
			Query query = em.createQuery(sqlS.toString());
			if (firstrow != null) {
				query.setFirstResult(firstrow);
			}
			if (maxrow != null) {
				query.setMaxResults(maxrow);
			}
			queryList = query.getResultList();
		} catch (Exception e) {
			logger.error(e.getMessage());
			e.printStackTrace();
		}
		return queryList;
	}
	
	/**
	 * 换机
	 * 电话号码与SN映射信息总记录数
	 * @param hashMap
	 * @return Integer
	 */
	public Integer findAllTelDeviceEntityCounthj(DataMap hashMap){
		TTelDevice teldevice=(TTelDevice) hashMap.get("teldevice");
		Integer iCount = 0; 
		StringBuffer sqlS = new StringBuffer("SELECT count(t.devicesn) FROM TTelDevice t WHERE 1=1 ");
		if(teldevice!=null){
			if(teldevice.getKdzh()!=null&& teldevice.getKdzh().toString().trim().length() > 0){
				sqlS.append(" AND t.kdzh='"
						+ teldevice.getKdzh().toString().trim() + "'");
			}
			if(teldevice.getDevicesn()!=null&& teldevice.getDevicesn().toString().trim().length() > 0){
				sqlS.append(" AND t.devicesn='"
						+ teldevice.getDevicesn().toString().trim() + "'");
			}
			if(teldevice.getTelnumber()!=null&& teldevice.getTelnumber().toString().trim().length() > 0){
				sqlS.append(" AND t.telnumber='"
						+ teldevice.getTelnumber().toString().trim() + "'");
			}
		}
		Query query=null;
		try {
			query = em.createQuery(sqlS.toString());
			iCount = Integer.valueOf(query.getSingleResult().toString());
		} catch (Exception e) {
			logger.error(e.getMessage());
			e.printStackTrace();
		}
		return iCount;
	}
	
	/**
	 * 新增
	 * @param teldevice
	 * @return int -2：SN重复；-1:插入失败；-3：SN不存在；-4：数据错误，请校对该数据的准确性；-5：更新现网用户信息对应的SN
	 */
	public int addTeldevice(TTelDevice teldevice) {
		int resultb=0;
//		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//		try {
////			this.init();
//				sql="select count(sn) from news_sn_area where sn='"+teldevice.getDevicesn()+"'";
//				if(this.getOneInt()==0)return -3;
////			
////				prep=conn.prepareStatement(sql);
////			prep.setString(1, teldevice.getDevicesn());
////			rs1=prep.executeQuery();
////			if(rs1.next()){
////				if(rs1.getInt(1)==0){
////					return -3;
////				}
////			}
//				sql="select devicesn from t_tel_device where devicesn='"+teldevice.getDevicesn()+"' and kdzh='"+teldevice.getKdzh()+"'";
////			prep=conn.prepareStatement(sql);
////			prep.setString(1, teldevice.getDevicesn());
////			prep.setString(2, teldevice.getKdzh());
////			rs1=prep.executeQuery();
////			if(rs1.next()){
////				//宽带账号与sn,同时存在
////				return -2;
////			}
//				String dsn=this.getOneString();
//				if(!"".equals(dsn))return -2;
//				sql="select devicesn,hjbz from t_tel_device where kdzh='"+teldevice.getKdzh()+"' and kdzh!=''";
////			prep=conn.prepareStatement(sql);
////			prep.setString(1, teldevice.getKdzh());
////			rs1=prep.executeQuery();
////			if(rs1.next()){
//				
//				if(!rs1.getString(1).equals(teldevice.getDevicesn())){
//					//宽带账号存在，sn不同
//						sql="select devicesn from t_tel_device where devicesn=?";
//					prep1=conn.prepareStatement(sql);
//					prep1.setString(1, teldevice.getDevicesn());
//					rs2=prep1.executeQuery();
//					if(rs2.next()){
//						//sn已关联宽带账号(可为空)
//						return -4;
//					}else if(teldevice.getUser_type()==1){
//						//用户类型:1家庭用户
//						sql="select count(kdzh) from t_tel_device where kdzh=? and user_type!=1";
//						prep2=conn.prepareStatement(sql);
//						prep2.setString(1, teldevice.getKdzh());
//						rs3=prep2.executeQuery();
//						if(rs3.next()){
//							if(rs3.getInt(1)==0){
//								if(rs1.getInt(2)==0){
//									//则更新现网用户信息对应的宽带账号,换机情况
//									//modify 20111014 add profession and tarea
//										sql="update t_tel_device set devicesn=?,telnumber=?,createtime=?,kdnumber=?,cname=?,creleation=?,cinfo=?,ckeyword=?,oktime=?,cstatus=?" +
//									",caddress=?,yyt=?,cempnumber=?,cempname=?,banknumber=?,servernumber=?,callcenter=?,callarea=?,servertx=?" +
//									",serveraction=?,priceaction=?,productname=?,pricename=?,jx=?,qqh=?,relationnumber=?,serverarea=?,serverqy=?,xzq=?" +
//									",fzman=?,fzdepartment=?,validtime=?,notvalidtime=?,groupnote=?,kdsl=?,note=?,user_areaid=?,user_status=?,profession=?,tarea=?" +
//									" where kdzh=?";
//									prep2=conn.prepareStatement(sql);
//									prep2.setString(1, teldevice.getDevicesn());
//									prep2.setString(2, teldevice.getTelnumber());
//									if(teldevice.getCreatetime()!=null){
//										prep2.setString(3, sdf.format(teldevice.getCreatetime()));
//									}else{
//										prep2.setDate(3, null);
//									}
//									prep2.setString(4, teldevice.getKdnumber());
//									prep2.setString(5, teldevice.getCname());
//									prep2.setString(6, teldevice.getCreleation());
//									prep2.setString(7, teldevice.getCinfo());
//									prep2.setString(8, teldevice.getCkeyword());
//									if(teldevice.getOktime()!=null){
//										prep2.setString(9, sdf.format(teldevice.getOktime()));
//									}else{
//										prep2.setDate(9, null);
//									}
//									prep2.setString(10, teldevice.getCstatus());
//									
//									prep2.setString(11, teldevice.getCaddress());
//									prep2.setString(12, teldevice.getYyt());
//									prep2.setString(13, teldevice.getCempnumber());
//									prep2.setString(14, teldevice.getCempname());
//									prep2.setString(15, teldevice.getBanknumber());
//									prep2.setString(16, teldevice.getServernumber());
//									prep2.setString(17, teldevice.getCallcenter());
//									prep2.setString(18, teldevice.getCallarea());
//									prep2.setString(19, teldevice.getServertx());
//									
//									prep2.setString(20, teldevice.getServeraction());
//									prep2.setString(21, teldevice.getPriceaction());
//									prep2.setString(22, teldevice.getProductname());
//									prep2.setString(23, teldevice.getPricename());
//									prep2.setString(24, teldevice.getJx());
//									prep2.setString(25, teldevice.getQqh());
//									prep2.setString(26, teldevice.getRelationnumber());
//									prep2.setString(27, teldevice.getServerarea());
//									prep2.setString(28, teldevice.getServerqy());
//									prep2.setString(29, teldevice.getXzq());
//									
//									prep2.setString(30, teldevice.getFzman());
//									prep2.setString(31, teldevice.getFzdepartment());
//									if(teldevice.getValidtime()!=null){
//										prep2.setString(32, sdf.format(teldevice.getValidtime()));
//									}else{
//										prep2.setDate(32, null);
//									}
//									if(teldevice.getNotvalidtime()!=null){
//										prep2.setString(33, sdf.format(teldevice.getNotvalidtime()));
//									}else{
//										prep2.setDate(33, null);
//									}
//									prep2.setString(34, teldevice.getGroupnote());
//									prep2.setString(35, teldevice.getKdsl());
//									prep2.setString(36, teldevice.getNote());
//									prep2.setString(37, teldevice.getUser_areaid());
//									prep2.setInt(38, 0);
//									prep2.setString(39, teldevice.getProfession());
//									prep2.setString(40, teldevice.getTarea());
//									prep2.setString(41, teldevice.getKdzh());
//									prep2.executeUpdate();
//									return -5;
//								}else{
//									return -6;//忽略处理，家世通设备ID处于换机或正常状态
//								}
//								
//							}else{
//								return -7;//忽略处理
//							}
//							
//						}
//					}
//				}
//			}else{
//				//宽带账号不存在
//					sql="select kdzh from t_tel_device where devicesn=?";
//				prep=conn.prepareStatement(sql);
//				prep.setString(1, teldevice.getDevicesn());
//				rs1=prep.executeQuery();
//				if(rs1.next()){
//					/*if("".equals(rs1.getString(1))){
//						//为sn更新宽带账号
//						//coding。。。
//					}*/
//					//sn已关联其他宽带账号，提示错误，手工校对该数据准确性后再更新
//					return -4;
//				}
//			}
//				sql="insert into t_tel_device(devicesn,telnumber,createtime,kdnumber,cname,creleation,cinfo,ckeyword,oktime,cstatus" +
//						",caddress,yyt,cempnumber,cempname,kdzh,banknumber,servernumber,callcenter,callarea,servertx" +
//						",serveraction,priceaction,productname,pricename,jx,qqh,relationnumber,serverarea,serverqy,xzq" +
//						",fzman,fzdepartment,validtime,notvalidtime,groupnote,kdsl,note,user_areaid,user_status,hjbz,hjtime,user_type,profession,tarea) " +
//						" values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
//			prep=conn.prepareStatement(sql);
//			prep.setString(1, teldevice.getDevicesn());
//			prep.setString(2, teldevice.getTelnumber());
//			if(teldevice.getCreatetime()!=null){
//				prep.setString(3, sdf.format(teldevice.getCreatetime()));
//			}else{
//				prep.setDate(3, null);
//			}
//			prep.setString(4, teldevice.getKdnumber());
//			prep.setString(5, teldevice.getCname());
//			prep.setString(6, teldevice.getCreleation());
//			prep.setString(7, teldevice.getCinfo());
//			prep.setString(8, teldevice.getCkeyword());
//			if(teldevice.getOktime()!=null){
//				prep.setString(9, sdf.format(teldevice.getOktime()));
//			}else{
//				prep.setDate(9, null);
//			}
//			prep.setString(10, teldevice.getCstatus());
//			
//			prep.setString(11, teldevice.getCaddress());
//			prep.setString(12, teldevice.getYyt());
//			prep.setString(13, teldevice.getCempnumber());
//			prep.setString(14, teldevice.getCempname());
//			prep.setString(15, teldevice.getKdzh());
//			prep.setString(16, teldevice.getBanknumber());
//			prep.setString(17, teldevice.getServernumber());
//			prep.setString(18, teldevice.getCallcenter());
//			prep.setString(19, teldevice.getCallarea());
//			prep.setString(20, teldevice.getServertx());
//			
//			prep.setString(21, teldevice.getServeraction());
//			prep.setString(22, teldevice.getPriceaction());
//			prep.setString(23, teldevice.getProductname());
//			prep.setString(24, teldevice.getPricename());
//			prep.setString(25, teldevice.getJx());
//			prep.setString(26, teldevice.getQqh());
//			prep.setString(27, teldevice.getRelationnumber());
//			prep.setString(28, teldevice.getServerarea());
//			prep.setString(29, teldevice.getServerqy());
//			prep.setString(30, teldevice.getXzq());
//			
//			prep.setString(31, teldevice.getFzman());
//			prep.setString(32, teldevice.getFzdepartment());
//			if(teldevice.getValidtime()!=null){
//				prep.setString(33, sdf.format(teldevice.getValidtime()));
//			}else{
//				prep.setDate(33, null);
//			}
//			if(teldevice.getNotvalidtime()!=null){
//				prep.setString(34, sdf.format(teldevice.getNotvalidtime()));
//			}else{
//				prep.setDate(34, null);
//			}
//			prep.setString(35, teldevice.getGroupnote());
//			prep.setString(36, teldevice.getKdsl());
//			prep.setString(37, teldevice.getNote());
//			prep.setString(38, teldevice.getUser_areaid());
//			prep.setInt(39, 0);
//			prep.setInt(40, 0);//换机标识
//			prep.setString(41, sdf.format(new Date()));//换机时间
//			prep.setInt(42, teldevice.getUser_type());//用户类型
//			prep.setString(43, teldevice.getProfession());//行业
//			prep.setString(44, teldevice.getTarea());//地域
//			prep.executeUpdate();
//			
//			conn.commit(); 
//		} catch (Exception e) {
//			logger.error("addTeldevice fail !!!" + e.getMessage());
//			resultb=-1;
//			e.printStackTrace();
//			if(conn!=null){
//				try {
//					conn.rollback();
//				} catch (SQLException e1) {
//					e1.printStackTrace();
//				} 
//			}
//		} finally {
//			this.closeAll();
//		}
		return resultb;
	}

	
	/**
	 * 修改
	 * @param teldevice
	 * @param teldevice_before
	 * @return int -2：SN重复；-1:更新失败；-3：SN不存在；-4：数据错误，请校对该数据的准确性；-5：宽带账号已存在
	 */
	public int updateTeldevice(TTelDevice teldevice, TTelDevice teldevice_before) {
		int resultb=0;
//		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//		try {
//			this.init();
//				sql="select count(sn) from news_sn_area where sn=?";
//			prep=conn.prepareStatement(sql);
//			prep.setString(1, teldevice.getDevicesn());
//			rs1=prep.executeQuery();
//			if(rs1.next()){
//				if(rs1.getInt(1)==0){
//					return -3;
//				}
//			}
//			if(!(teldevice.getDevicesn().equals(teldevice_before.getDevicesn())&&teldevice.getKdzh().equals(teldevice_before.getKdzh()))){
//				sql="select devicesn from t_tel_device where devicesn=? and kdzh=?";
//				prep=conn.prepareStatement(sql);
//				prep.setString(1, teldevice.getDevicesn());
//				prep.setString(2, teldevice.getKdzh());
//				rs1=prep.executeQuery();
//				if(rs1.next()){
//					//宽带账号与sn,同时存在
//					return -2;
//				}
//			}
//				sql="select devicesn,count(devicesn) from t_tel_device where kdzh=? and kdzh!=''";
//			prep=conn.prepareStatement(sql);
//			prep.setString(1, teldevice.getKdzh());
//			rs1=prep.executeQuery();
//			if(rs1.next()){
//				if(teldevice.getUser_type()==1&&rs1.getInt(2)>1){
//					return -5;
//				}
//				if(rs1.getInt(2)==1){
//					//宽带账号不存在
//						sql="select kdzh from t_tel_device where devicesn=? and devicesn!=?";
//					prep=conn.prepareStatement(sql);
//					prep.setString(1, teldevice.getDevicesn());
//					prep.setString(2, teldevice_before.getDevicesn());
//					rs1=prep.executeQuery();
//					if(rs1.next()){
//						//sn已关联其他宽带账号，提示错误，手工校对该数据准确性后再更新
//						return -4;
//					}
//				}
//			}
//			
//			//得到老的电话号码
//				sql="SELECT telnumber FROM t_tel_device t WHERE t.devicesn=?";
//			prep=conn.prepareStatement(sql);
//			prep.setString(1, teldevice_before.getDevicesn());
//			rs1=prep.executeQuery();
//			if(rs1.next()){
//				teldevice_before.setTelnumber(rs1.getString(1));
//			}
//				
//				sql="update t_tel_device set devicesn=?,telnumber=?,createtime=?,kdnumber=?,cname=?,creleation=?,cinfo=?,ckeyword=?,oktime=?,cstatus=?" +
//			",caddress=?,yyt=?,cempnumber=?,cempname=?,kdzh=?,banknumber=?,servernumber=?,callcenter=?,callarea=?,servertx=?" +
//			",serveraction=?,priceaction=?,productname=?,pricename=?,jx=?,qqh=?,relationnumber=?,serverarea=?,serverqy=?,xzq=?" +
//			",fzman=?,fzdepartment=?,validtime=?,notvalidtime=?,groupnote=?,kdsl=?,note=?,user_areaid=?,user_status=?,user_type=?" +
//			",profession=?,tarea=? where devicesn=?";
//			prep=conn.prepareStatement(sql);
//			prep.setString(1, teldevice.getDevicesn());
//			prep.setString(2, teldevice.getTelnumber());
//			if(teldevice.getCreatetime()!=null){
//				prep.setString(3, sdf.format(teldevice.getCreatetime()));
//			}else{
//				prep.setDate(3, null);
//			}
//			prep.setString(4, teldevice.getKdnumber());
//			prep.setString(5, teldevice.getCname());
//			prep.setString(6, teldevice.getCreleation());
//			prep.setString(7, teldevice.getCinfo());
//			prep.setString(8, teldevice.getCkeyword());
//			if(teldevice.getOktime()!=null){
//				prep.setString(9, sdf.format(teldevice.getOktime()));
//			}else{
//				prep.setDate(9, null);
//			}
//			prep.setString(10, teldevice.getCstatus());
//			
//			prep.setString(11, teldevice.getCaddress());
//			prep.setString(12, teldevice.getYyt());
//			prep.setString(13, teldevice.getCempnumber());
//			prep.setString(14, teldevice.getCempname());
//			prep.setString(15, teldevice.getKdzh());
//			prep.setString(16, teldevice.getBanknumber());
//			prep.setString(17, teldevice.getServernumber());
//			prep.setString(18, teldevice.getCallcenter());
//			prep.setString(19, teldevice.getCallarea());
//			prep.setString(20, teldevice.getServertx());
//			
//			prep.setString(21, teldevice.getServeraction());
//			prep.setString(22, teldevice.getPriceaction());
//			prep.setString(23, teldevice.getProductname());
//			prep.setString(24, teldevice.getPricename());
//			prep.setString(25, teldevice.getJx());
//			prep.setString(26, teldevice.getQqh());
//			prep.setString(27, teldevice.getRelationnumber());
//			prep.setString(28, teldevice.getServerarea());
//			prep.setString(29, teldevice.getServerqy());
//			prep.setString(30, teldevice.getXzq());
//			
//			prep.setString(31, teldevice.getFzman());
//			prep.setString(32, teldevice.getFzdepartment());
//			if(teldevice.getValidtime()!=null){
//				prep.setString(33, sdf.format(teldevice.getValidtime()));
//			}else{
//				prep.setDate(33, null);
//			}
//			if(teldevice.getNotvalidtime()!=null){
//				prep.setString(34, sdf.format(teldevice.getNotvalidtime()));
//			}else{
//				prep.setDate(34, null);
//			}
//			prep.setString(35, teldevice.getGroupnote());
//			prep.setString(36, teldevice.getKdsl());
//			prep.setString(37, teldevice.getNote());
//			prep.setString(38, teldevice.getUser_areaid());
//			prep.setInt(39, 0);
//			prep.setInt(40, teldevice.getUser_type());
//			prep.setString(41, teldevice.getProfession());
//			prep.setString(42, teldevice.getTarea());
//			prep.setString(43, teldevice_before.getDevicesn());
//			prep.executeUpdate();
//			
//			if(!teldevice.getTelnumber().equals(teldevice_before.getTelnumber())&&!"".equals(teldevice.getTelnumber())&&!"".equals(teldevice_before.getTelnumber())){
//				//根据老的电话号码更新 学生/员工 信息
//				sql="UPDATE t_deviceextend t SET t.stel=? WHERE t.stel=?";
//				prep=conn.prepareStatement(sql);
//				prep.setString(1, teldevice.getTelnumber());
//				prep.setString(2, teldevice_before.getTelnumber());
//				prep.executeUpdate();
//			}
//			
//			conn.commit(); 
//		} catch (Exception e) {
//			logger.error("updateTeldevice fail !!!" + e.getMessage());
//			resultb=-1;
//			e.printStackTrace();
//			if(conn!=null){
//				try {
//					conn.rollback();
//				} catch (SQLException e1) {
//					e1.printStackTrace();
//				} 
//			}
//		} finally {
//			this.closeAll();
//		}
		return resultb;
	}
	
	
	/**
	 * 修改,换机
	 * @param teldevice
	 * @param teldevice_before
	 * @return int -2：SN重复；-1:更新失败；-3：SN不存在；-4：数据错误，请校对该数据的准确性；-5：宽带账号已存在
	 */
	public int updateTeldevicehj(TTelDevice teldevice, TTelDevice teldevice_before) {
		int resultb=0;
//		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//		try {
//			this.init();
//				sql="select count(sn) from news_sn_area where sn=?";
//			prep=conn.prepareStatement(sql);
//			prep.setString(1, teldevice.getDevicesn());
//			rs1=prep.executeQuery();
//			if(rs1.next()){
//				if(rs1.getInt(1)==0){
//					return -3;
//				}
//			}
//			if(!(teldevice.getDevicesn().equals(teldevice_before.getDevicesn())&&teldevice.getKdzh().equals(teldevice_before.getKdzh()))){
//				sql="select devicesn from t_tel_device where devicesn=? and kdzh=?";
//				prep=conn.prepareStatement(sql);
//				prep.setString(1, teldevice.getDevicesn());
//				prep.setString(2, teldevice.getKdzh());
//				rs1=prep.executeQuery();
//				if(rs1.next()){
//					//宽带账号与sn,同时存在
//					return -2;
//				}
//			}
//				sql="select devicesn from t_tel_device where kdzh=? and kdzh!='' and kdzh!=?";
//			prep=conn.prepareStatement(sql);
//			prep.setString(1, teldevice.getKdzh());
//			prep.setString(2, teldevice_before.getKdzh());
//			rs1=prep.executeQuery();
//			if(rs1.next()){
//				return -5;
//			}else{
//				//宽带账号不存在
//					sql="select kdzh from t_tel_device where devicesn=? and devicesn!=?";
//				prep=conn.prepareStatement(sql);
//				prep.setString(1, teldevice.getDevicesn());
//				prep.setString(2, teldevice_before.getDevicesn());
//				rs1=prep.executeQuery();
//				if(rs1.next()){
//					/*if("".equals(rs1.getString(1))){
//						//为sn更新宽带账号
//						//coding。。。
//					}*/
//					//sn已关联其他宽带账号，提示错误，手工校对该数据准确性后再更新
//					return -4;
//				}
//			}
//				sql="update t_tel_device set devicesn=?,telnumber=?,createtime=?,creleation=?,kdzh=?,hjbz=?,hjtime=?,user_status=? where devicesn=?";
//			prep=conn.prepareStatement(sql);
//			prep.setString(1, teldevice.getDevicesn());
//			prep.setString(2, teldevice.getTelnumber());
//			if(teldevice.getCreatetime()!=null){
//				prep.setString(3, sdf.format(teldevice.getCreatetime()));
//			}else{
//				prep.setDate(3, null);
//			}
//			prep.setString(4, teldevice.getCreleation());
//			prep.setString(5, teldevice.getKdzh());
//			prep.setInt(6, teldevice.getHjbz());//换机标识
//			prep.setString(7, sdf.format(teldevice.getHjtime()));//换机时间
//			prep.setInt(8, 0);
//			prep.setString(9, teldevice_before.getDevicesn());
//			prep.executeUpdate();
//			
//			//20110920 更新换机后的t_deviceextend中的SN
//				sql="update t_deviceextend set sn=? where sn=?";
//			prep=conn.prepareStatement(sql);
//			prep.setString(1, teldevice.getDevicesn());
//			prep.setString(2, teldevice_before.getDevicesn());
//			prep.executeUpdate();
//		
//			//20110920 更新换机后的新机器代替老机器的clientid和组的关系
//				sql="select distinct groupruleid from news_groupuserset where clientid in (select clientid from news_clientinfo where mencoding=?)";
//			prep=conn.prepareStatement(sql);
//			prep.setString(1, teldevice_before.getDevicesn());
//			rs1=prep.executeQuery();
//				sql="insert into news_groupuserset(groupruleid,clientid) (select ? groupid,clientid from news_clientinfo where mencoding=?)";
//			prep2=conn.prepareStatement(sql);
//			while(rs1.next()){
//				prep2.setInt(1, rs1.getInt(1));
//				prep2.setString(2, teldevice.getDevicesn());
//				try {
//					prep2.executeUpdate();
//				} catch (Exception e) {
//				}
//			}
//				sql="delete from news_groupuserset where clientid in (select clientid from news_clientinfo where mencoding=?)";
//			prep=conn.prepareStatement(sql);
//			prep.setString(1, teldevice_before.getDevicesn());
//			prep.executeUpdate();
//			
//				sql="select groupid from news_group_sn where sn=?";
//			prep=conn.prepareStatement(sql);
//			prep.setString(1, teldevice_before.getDevicesn());
//			rs1=prep.executeQuery();
//				sql="insert into news_group_sn(sn,groupid) values(?,?)";
//			prep2=conn.prepareStatement(sql);
//			while(rs1.next()){
//				prep2.setString(1,teldevice.getDevicesn());
//				prep2.setInt(2, rs1.getInt(1));
//				try {
//					prep2.executeUpdate();
//				} catch (Exception e) {
//				}
//			}
//				sql="delete from news_group_sn where sn=?";
//			prep=conn.prepareStatement(sql);
//			prep.setString(1, teldevice_before.getDevicesn());
//			prep.executeUpdate();
//			//
//			
//			conn.commit(); 
//		} catch (Exception e) {
//			logger.error("updateTeldevice fail !!!" + e.getMessage());
//			resultb=-1;
//			e.printStackTrace();
//			if(conn!=null){
//				try {
//					conn.rollback();
//				} catch (SQLException e1) {
//					e1.printStackTrace();
//				} 
//			}
//		} finally {
//			this.closeAll();
//		}
		return resultb;
	}
	
	/**
	 * 修改
	 * @param teldevice
	 * @param teldevice_before
	 * @return
	 */
	/*public Boolean updateTeldevice(TTelDevice teldevice, TTelDevice teldevice_before) {
		Boolean resultb=true;
		try {
			this.initEM();
			em.getTransaction().begin();
			String jpql="SELECT t FROM TTelDevice t WHERE t.devicesn=:devicesn AND t.devicesn!=:devicesn_before";
			Query query = em.createQuery(jpql);
			query.setParameter("devicesn",teldevice.getDevicesn());
			query.setParameter("devicesn_before",teldevice_before.getDevicesn());
			TTelDevice teldevice_temp= (TTelDevice) getSingleResult(query);
			if(teldevice_temp!=null){
				resultb=null;
			}else{
				//得到老的电话号码
				jpql="SELECT t FROM TTelDevice t WHERE t.devicesn=:devicesn_before";
				query = em.createQuery(jpql);
				query.setParameter("devicesn_before",teldevice_before.getDevicesn());
				teldevice_temp= (TTelDevice) getSingleResult(query);
				teldevice_before.setTelnumber(teldevice_temp.getTelnumber());
				
				jpql="UPDATE TTelDevice t SET" +
						" t.devicesn=:devicesn,t.telnumber=:telnumber " +
						",t.createtime=:createtime,t.kdnumber=:kdnumber,t.cname=:cname,t.creleation=:creleation,t.cinfo=:cinfo " +
						",t.ckeyword=:ckeyword,t.oktime=:oktime,t.cstatus=:cstatus,t.caddress=:caddress,t.yyt=:yyt " +
						",t.cempnumber=:cempnumber,t.cempname=:cempname,t.kdzh=:kdzh,t.banknumber=:banknumber,t.servernumber=:servernumber " +
						",t.callcenter=:callcenter,t.callarea=:callarea,t.servertx=:servertx,t.serveraction=:serveraction,t.priceaction=:priceaction " +
						",t.productname=:productname,t.pricename=:pricename,t.jx=:jx,t.qqh=:qqh,t.relationnumber=:relationnumber " +
						",t.serverarea=:serverarea,t.serverqy=:serverqy,t.xzq=:xzq,t.fzman=:fzman,t.fzdepartment=:fzdepartment " +
						",t.validtime=:validtime,t.notvalidtime=:notvalidtime,t.groupnote=:groupnote,t.kdsl=:kdsl,t.note=:note,t.user_areaid=:user_areaid , user_status=0 " +
						"WHERE t.devicesn=:devicesn_before";
				query = em.createQuery(jpql);
				query.setParameter("devicesn",teldevice.getDevicesn());
				query.setParameter("telnumber", teldevice.getTelnumber());
				
				query.setParameter("createtime", teldevice.getCreatetime());
				query.setParameter("kdnumber", teldevice.getKdnumber());
				query.setParameter("cname", teldevice.getCname());
				query.setParameter("creleation", teldevice.getCreleation());
				query.setParameter("cinfo", teldevice.getCinfo());
				
				query.setParameter("ckeyword", teldevice.getCkeyword());
				query.setParameter("oktime", teldevice.getOktime());
				query.setParameter("cstatus", teldevice.getCstatus());
				query.setParameter("caddress", teldevice.getCaddress());
				query.setParameter("yyt", teldevice.getYyt());
				
				query.setParameter("cempnumber", teldevice.getCempnumber());
				query.setParameter("cempname", teldevice.getCempname());
				query.setParameter("kdzh", teldevice.getKdzh());
				query.setParameter("banknumber", teldevice.getBanknumber());
				query.setParameter("servernumber", teldevice.getServernumber());
				
				query.setParameter("callcenter", teldevice.getCallcenter());
				query.setParameter("callarea", teldevice.getCallarea());
				query.setParameter("servertx", teldevice.getServertx());
				query.setParameter("serveraction", teldevice.getServeraction());
				query.setParameter("priceaction", teldevice.getPriceaction());
				
				query.setParameter("productname", teldevice.getProductname());
				query.setParameter("pricename", teldevice.getPricename());
				query.setParameter("jx", teldevice.getJx());
				query.setParameter("qqh", teldevice.getQqh());
				query.setParameter("relationnumber", teldevice.getRelationnumber());
				
				query.setParameter("serverarea", teldevice.getServerarea());
				query.setParameter("serverqy", teldevice.getServerqy());
				query.setParameter("xzq", teldevice.getXzq());
				query.setParameter("fzman", teldevice.getFzman());
				query.setParameter("fzdepartment", teldevice.getFzdepartment());
				
				query.setParameter("validtime", teldevice.getValidtime());
				query.setParameter("notvalidtime", teldevice.getNotvalidtime());
				query.setParameter("groupnote", teldevice.getGroupnote());
				query.setParameter("kdsl", teldevice.getKdsl());
				query.setParameter("note", teldevice.getNote());
				query.setParameter("user_areaid",teldevice.getUser_areaid());
				query.setParameter("devicesn_before",teldevice_before.getDevicesn());
				query.executeUpdate();
				
				
				if(!teldevice.getTelnumber().equals(teldevice_before.getTelnumber())&&!"".equals(teldevice.getTelnumber())&&!"".equals(teldevice_before.getTelnumber())){
					//根据老的电话号码更新 学生/员工 信息
					jpql="UPDATE TDeviceExtend t SET t.stel=? WHERE t.stel=?";
					query = em.createQuery(jpql);
					query.setParameter(1, teldevice.getTelnumber());
					query.setParameter(2, teldevice_before.getTelnumber());
					query.executeUpdate();
				}
			}
			em.getTransaction().commit();
		} catch (Exception e) {
			logger.error("updateTeldevice fail !!!" + e.getMessage());
			e.printStackTrace();
			resultb=false;
			em.getTransaction().rollback();
		} finally {
			this.closeAll();
		}
		return resultb;
	}*/

	/**
	 * 删除
	 * @param ids
	 * @return
	 */
	public boolean deleteTeldeviceByIds(String ids) {
		boolean resultb=true;
//		try {
//			this.init();
//			this.sql="delete from t_tel_device where devicesn=?";
//			prep=conn.prepareStatement(sql);
//			String[] idarys=ids.split(","); 
//			for(String id:idarys){
//				//电话号码与SN映射信息
//				prep.setString(1, id);
//				prep.addBatch();
//			}
//			prep.executeBatch();
//			conn.commit(); 
//		} catch (Exception e) {
//			logger.error("deleteTeldeviceByIds fail !!!" + e.getMessage());
//			e.printStackTrace();
//			resultb=false;
//			if(conn!=null){
//				try {
//					conn.rollback();
//				} catch (SQLException e1) {
//					e1.printStackTrace();
//				} 
//			}
//		} finally {
//			this.closeAll();
//		}
		return resultb;
	}
	
	public TTelDevice findTelDeviceById(String devicesn) {
		TTelDevice o = null;
		try {
			o = this.em.find(TTelDevice.class, devicesn);
		} catch (Exception e) {
			logger.error(e.getMessage());
			e.printStackTrace();
		}
		return o;
	}
	
	public Object getSingleResult(Query query) {
		Object o =null;
		try {
			o = query.getSingleResult();
		} catch (NoResultException ex) {
			return null;
		} catch (NonUniqueResultException ex) {
			o = query.getResultList();
			return ((List) o).get(0);
		}
		return o;
	}

	/**
	 * 根据机器序列号ids得到电话号码字符串
	 * @param ids
	 * @return
	 */
	public String getTelSbyDevicesnS(String devicesnSList) {
		String telS=null;
//		try {
//			this.init();
//			String sql="select group_concat(telnumber) from t_tel_device where devicesn in ("+devicesnSList+")";
//			rs1=stmt.executeQuery(sql);
//			if(rs1.next()){
//				telS=rs1.getString(1);
//			}
//		} catch (Exception e) {
//			logger.info("getTelSbyDevicesnS fail !!!" + e.getMessage());
//			e.printStackTrace();
//		} finally {
//			this.closeAll();
//		}
		return telS;
	}

}